'''
v1.08
        优化功能
        1 bug：坦克不能移动出边界
'''
import pygame
_display = pygame.display
version="v1.08"
class MainGame():
    #游戏主窗口
    window = None
    SCREEN_HEIGHT = 800
    SCREEN_WIDTH = 1200
    COLOR_BLACK=pygame.Color(0,0,0)
    #创建我方坦克
    TANK_P1 = None
    def __init__(self):
        pass
    #开始游戏方法
    def startGame(self):
        _display.init()
        #创建窗口加载窗口
        MainGame.window = _display.set_mode(size=(1200,800))
        #创建我方坦克
        MainGame.TANK_P1=Tank(1150,750)
        #设置游戏标题
        _display.set_caption("坦克大战"+version)
        # self.getTextSurface("aa")
        #让窗口出口持续刷新操作
        while True:
            #给窗口填充颜色
            MainGame.window.fill(MainGame.COLOR_BLACK)
            #在循环中持续完成事件获取
            self.getEvent()
            #将绘制文字得到的画布，粘贴到窗口
            MainGame.window.blit(self.getTextSurface("剩余地方坦克%d辆"%5),(5,5))
            #将我防坦克加入窗口
            MainGame.TANK_P1.displayTank()
            #刷新窗口
            _display.update()
    #获取程序期间所有事件（鼠标事件，键盘事件）
    def getEvent(self):
        #获取所有事件
        eventList=pygame.event.get()
        #1,点击关闭结束 2.按下键盘上某个按钮
        for event in eventList:
            #p判断event.type 是否Quit，如果是退出，直接调用结束方法
            if event.type==pygame.QUIT:
                self.endGame()
            #判断事件类型是否为按键按下，如果是，继续判断按键是哪一个按键，进行对应处理
            if event.type==pygame.KEYDOWN:
                #具体是哪一个按键的处理
                if event.key==pygame.K_LEFT:
                    print("坦克向左调头，移动")
                    #修改坦克方向
                    MainGame.TANK_P1.direction="L"
                    #移动操作
                    MainGame.TANK_P1.move()
                elif event.key==pygame.K_RIGHT:
                    print("坦克向右调头，移动")
                    # 修改坦克方向
                    MainGame.TANK_P1.direction = "R"
                    # 移动操作
                    MainGame.TANK_P1.move()
                elif event.key == pygame.K_DOWN:
                    print("坦克向下调头，移动")
                    # 修改坦克方向
                    MainGame.TANK_P1.direction = "D"
                    # 移动操作
                    MainGame.TANK_P1.move()
                elif event.key == pygame.K_UP:
                    print("坦克向上调头，移动")
                    # 修改坦克方向
                    MainGame.TANK_P1.direction = "U"
                    # 移动操作
                    MainGame.TANK_P1.move()
                elif event.key == pygame.K_SPACE:
                    print("发射子弹")
    #左上角文字绘制功能
    def getTextSurface(self,text):
        #初始化字体模块
        pygame.font.init()
        #选择合适字体
        # fontList=pygame.font.get_fonts()
        # print(fontList)
        font=pygame.font.SysFont("kaiti", 18,)
        #绘制
        textSurface=font.render(text,True,(255,0,0))
        return textSurface
    #结束游戏方法
    def endGame(self):
        print("谢谢使用")
        #结束python解释器
        exit()
class Tank():
    def __init__(self,left,top):
        self.iamges={
            "U":pygame.image.load("img\images\WU.gif"),
            "D":pygame.image.load("img\images\WD.gif"),
            "L":pygame.image.load("img\images\WL.gif"),
            "R":pygame.image.load("img\images\WR.gif"),
        }
        self.direction="U"
        self.iamge=self.iamges[self.direction]
        #坦克所在区域
        self.rect =self.iamge.get_rect()
        #坦克距离x，y的位置
        self.rect.left=left
        self.rect.top=top
        #速度属性
        self.speed=5
    #坦克移动
    def move(self):
        if self.direction=="L":
            if self.rect.left>0:
                self.rect.left-=self.speed
        elif self.direction=="R":
            if self.rect.left<1150:
                self.rect.left+=self.speed
        elif self.direction=="U":
            if self.rect.top>0:
                self.rect.top-=self.speed
        elif self.direction=="D":
            if self.rect.top<750:
                self.rect.top+=self.speed
    #射击方法
    def shot(self):
        pass
    #展示坦克
    def displayTank(self):
        # 重新设置坦克的图片
        self.iamge=self.iamges[self.direction]
        #将坦克加入到窗口
        MainGame.window.blit(self.iamge,self.rect)
class MyTank(Tank):
    def __init__(self):
        pass
class EnemyTank(Tank):
    def __init__(self):
        pass
class Bullte():
    def __init__(self):
        pass
    #子弹移动
    def move(self):
        pass
    #子弹展示
    def displayBullte(self):
        pass
class Explode():
    def __init__(self):
        pass
    #展示爆炸效果
    def displayExplode(self):
        pass
class Wall():
    def __init__(self):
        pass
    #展示墙壁的方法
    def displayWall(self):
        pass
class Music():
    def __init__(self):
        pass
    #开始播放音乐
    def play(self):
        pass
MainGame().startGame()